home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / util / boot / ShellUpdate.lha / Documentation / Shell.ger < prev    next >
Text File  |  2002-01-12  |  12KB  |  293 lines

  1. Kurzeinführung neue Features der V45 Shell:
  2.  
  3. Neue Umleitungsargumente: Die altbekannten Umleitungsargumente der
  4. Shell >, >>, < und <> wurden erweitert und ausgebaut; damit beherrscht
  5. die Shell nun die folgenden Umleitungsargumente:
  6.  
  7. >filename    Umlenken der Ausgabe in eine Datei
  8. >>filename    Anhängen der Ausgabe an eine Datei, ggf. Neuerstellen
  9.         der Ausgabedatei
  10. <filename    Umlenken der Eingabe aus einer Datei in das Kommando
  11. <>console    Umlenken von Ein- und Ausgabe in die gleiche Datei.
  12.         Bei der Datei sollte es sich entweder um einen Konsolen-
  13.         treiber (CON:, RAW:, VNC:, AUX:) oder um NIL: handeln.
  14.         Gewöhnliche Dateien werden hier nicht akzeptiert.
  15.  
  16. *>filename    Umlenken der Fehlerausgabe in eine Datei.
  17.         Leider unterstützen nur sehr wenige Kommandos das Aus-
  18.         geben von Fehlern in den Fehlerkanal, üblicherweise
  19.         werden Fehlermeldungen leider in den Ausgabekanal
  20.         geschrieben.
  21.         Dieses Umleitungsargument ersetzt auch die Konsole des
  22.         auszuführenden Kommandos, sollte es sich bei der Datei-
  23.         bezeichnung um einen Konsolentreiber handeln.
  24. *>>filename    Wie oben, nur wird die Fehlerausgabe an die gegebene
  25.         Datei angehängt.
  26. *><        Umlenken der Fehlerausgabe in die gewöhnliche Ausgabe-
  27.         datei. Dies entspricht gewöhnlich auch der Voreistellung.
  28.         Ein Filenamenargument wird hier nicht benötigt.
  29. <<endmarker    Umlenken der Eingabedatei auf die Skriptdatei; der
  30.         Inhalt der Skriptdatei, in dem dieses Umlenkungsargument
  31.         steht, wird bis zur spezifizierten Endmarkierung der
  32.         Eingabestrom des Befehls.
  33.  
  34. Das letzte Umlenkungsargument bedarf noch weiterer Erklärung: Dieses
  35. Umlenkungsargument findet typischerweise Verwendung in sogenannten
  36. Skript- oder "Batch"-Dateien. Hierbei stehen die Daten, die den Eingabe-
  37. strom des Kommandos formen sollen, direkt innerhalb des Skriptes.
  38. Alle Zeilen bis zu der Zeile mit der gegebenen Endmarkierung werden
  39. dann als Eingabestrom in den Befehl gefüttert, und die Ausführung
  40. wird unterhalb der Endmarkierung fortgesetzt. Dies demonstriert das
  41. folgende Skript:
  42.  
  43. ask Prompt "Bitte eine Zahl eingeben: " numeric TO a <<endmarker
  44. 42
  45. endmarker
  46. echo $a
  47.  
  48. Der "ask"-Befehl wartet auf die Eingabe einer Zahl auf seinem Ein-
  49. gabestrom. Normalerweise ist dies die Konsole, aber aufgrund des
  50. Umleitungsargumentes << kommen die Eingabedaten nun aus der Skript-
  51. datei selbst. Die Zahl "42" unterhalb des "ask" Befehles bildet also
  52. die Eingabe für "ask", und der "endmarker" terminiert diese Eingabe.
  53. Die Ausführung des Skriptes wird dann mit dem "echo" Befehl fortgesetzt.
  54.  
  55. Die Endmarkierung ist dabei ein beliebig wählbarer Text, der nur zur
  56. Erkennung des Endes der einzulesenden Daten dient. Er ist nicht selbst
  57. Teil dieser Daten. Insbesondere wäre also
  58.  
  59. ask Prompt "Bitte eine Zahl eingeben: " numeric TO a <<43
  60. 42
  61. 43
  62. echo $a
  63.  
  64. äquivalent zum obigen Skript.
  65.  
  66. Das Umlenken der Eingabe mittels "<<" funktioniert nicht im Zusammen-
  67. hang mit dem "RUN" Befehl. Verwenden Sie stattdessen das &-Zeichen
  68. (siehe unten) zum Starten von Befehlen im Hintergrund.
  69.  
  70.  
  71.  
  72. Starten von Befehlen: Die V45 Shell erlaubt es ferner, ein Programm
  73. ähnlich wie durch "run" zu starten und dann sofort zur Shell zurück-
  74. zukehren. Dazu plaziere man ein einzelnes, durch Leerzeichen vom 
  75. Rest der Kommandozeile separiertes "&"-Zeichen in die Befehlsargumente.
  76. Das & ist dann nicht selbst Teil des Kommandos, sondern ändert die
  77. Art der Befehlsausführung. Längerfristige Kommandos und größere Skripte
  78. können so im Hintergrund ausgeführt werden, ohne dass die Arbeit in der
  79. Shell anderweitig behindert wird. So startet etwa
  80.  
  81. search from SYS:#? all "hallo" quiet &
  82.  
  83. einen längerfristigen Suchvorgang nach dem Text "hallo" in allen Dateien
  84. innerhalb der Systempartition, und kehrt sofort in die Konsole zurück.
  85.  
  86. Damit entspricht & fast, aber nicht ganz dem "run"-Kommando. Anders als
  87. "run" erhalten mit "&" gestartete Programme allerdings auch einen gültigen
  88. Eingabestrom und können so auf Benutzereingaben reagieren.
  89.  
  90. Im Zusammenhang mit den ViNCEd-Konsolenhandler nimmt & ebenso eine Job-
  91. kontrolle vor. Das mittels "&" gestartete Kommando wird angehalten sobald
  92. es versucht, eine Ausgabe oder Benutzereingabe zu tätigen. Man kann dann
  93. mittels des ViNCEd-Skriptes "fg" dieses Kommando aktivieren und in den
  94. Vordergrund legen. Beispielsweise druckt das Kommando "list &" folgende
  95. Ausgaben auf den Schirm (Dateibezeichnungen und CLI-Nummern können von dem
  96. hier gezeigten abweichen):
  97.  
  98. 7.SCSI:> list &
  99. [CLI 8] : list
  100. 7.SCSI:> 
  101. [CLI 8] : list suspended. [ViNCEd output]
  102. 7.SCSI:> 
  103.  
  104. Die Shell im Vordergrund hat die CLI-Nummer 7, der List-Befehl bekommt
  105. die CLI-Nummer 8, und wurde angehalten, da er auf der Konsole Ausgaben
  106. vornehmen wollte. Mittels des Kommandos
  107.  
  108. 7.SCSI:> fg 8
  109.  
  110. wird der List-Befehl, der wie gesagt die CLI-Nummer 8 erhielt, nun fort-
  111. gesetzt.
  112.  
  113.  
  114. Skript-Dateien mit beliebigen Kommandointerpreter: Ab V45 der Shell
  115. können Skriptdateien auch an beliebige Kommandointerpreter weiter-
  116. gereicht werden. Dazu muss einerseits das "s"-Bit der Datei gesetzt
  117. sein, andererseits müssen die ersten beiden Zeichen einer Datei ent-
  118. weder "#!" oder ";!" sein. Der folgende Text stellt dann den Pfad
  119. zum Kommandointerpreter und weitere Argumente dar. Der Name des Skriptes
  120. wird dann zwischen den Namen des Interpreters und die folgenden Argu-
  121. mente eingefügt.
  122.  
  123. Das folgende Beispielskript startet etwa den Interpreter "type"
  124. mittels des Argumentes "hex"
  125.  
  126. ;! type hex
  127. Dies wird in Hexadezimal ausgegeben.
  128.  
  129. Speichert man diesen Text unter dem Dateinamen "RAM:bla" und setzt
  130. mittels
  131.  
  132. protect ram:Bla s add
  133.  
  134. das "s"-Bit dieses Skriptes, so startet die Eingabe von "RAM:bla"
  135. den "type" Befehl mit den Argumenten "ram:bla hex" und gibt somit den 
  136. Inhalt der Datei selbst aus:
  137.  
  138. 7.SCSI:> ram:bla
  139. 0000: 3B212074 79706520 6865780A 44696573    ;! type hex.Dies     
  140. 0010: 20776972 6420696E 20486578 6164657A     wird in Hexadez     
  141. 0020: 696D616C 20617573 67656765 62656E2E    imal ausgegeben.     
  142. 0030: 0A                                     .
  143.  
  144. Im Zusammenhang mit Skript-basierten Sprachen wie "perl" lassen sich
  145. so komplette Skripte durch Eingabe des Skriptnamens starten.
  146.  
  147. Wie schon unter V40 startet ein Skript, das mit "/*" eingeleitet wird,
  148. den Rexx-Befehlsinterpreter.
  149.  
  150. Ohne "/*" und "#!" oder ";!" wird ein Skript als Shell-Skript ver-
  151. standen und mittels des "Execute"-Befehles interpretiert.
  152.  
  153.  
  154. Anzeigen von Datentypen: Ist das "e"-Bit einer Datei nicht gesetzt,
  155. handelt es sich hierbei um eine anzeigbare Datei und ist die Shell-
  156. Variable "VIEWER" gesetzt, so wird beim Eingeben des Dateinamens das
  157. mittels VIEWER gegebene Anzeigeprogramm gestartet. Typischerweise
  158. sollte man etwa mittels
  159.  
  160. Setenv SAVE VIEWER MultiView
  161.  
  162. das Os-Programm "MultiView" als Anzeigeprogramm auswählen. Ist
  163. dann das "e"-Bit der Datei "Shell.guide" gelöscht, so kann durch
  164. Eingabe von
  165.  
  166. Shell.guide
  167.  
  168. der Inhalt dieser Datei angezeigt werden. Der Befehl, den die
  169. Shell dann ausführt, entspricht
  170.  
  171. $VIEWER Shell.guide
  172.  
  173. bzw.
  174.  
  175. Multiview Shell.guide
  176.  
  177.  
  178. Das H-Bit und residente Kommandos: Ist von einer ausführbaren Datei
  179. sowohl das "p" als auch das "h"-Bit gesetzt, so wird dieser Befehl
  180. bei seiner ersten Anwendung automatisch resident. Dies entspricht
  181. der Funktion der V39 Shell, die aus Platzgründen in V40 abgeschaltet
  182. werden musste.
  183.  
  184.  
  185. Shell-Variablen: Die V45-Shell kann explizt erfragen, ob eine gegebene
  186. Variable definiert wurde. Ist "var" der Name einer Variable, so 
  187. resultiert $?var in 1, falls die Variable gesetzt wurde, und 0 sonst.
  188. $??var wird 1, wenn var eine globale Variable ist - dies sind Variablen,
  189. die durch SetEnv erstellt werden - und ist ansonsten null.
  190.  
  191.  
  192. Das umgekehrte Hochkomma: In Gegensatz zur V40-Shell können auf einer
  193. Kommandozeile auch mehrere umgekehrte Hochkomma-Paare stehen. Die
  194. mittels ` eingeschlossenen Befehle werden ausgeführt, und ihre Ausgabe
  195. in die Kommandozeile anstelle des umgekehrten Hochkomma-Paares einge-
  196. fügt. Dabei werden Zeilenvorschübe durch Leerzeichen ersetzt.
  197.  
  198. Im Gegensatz zur V40 Shell findet dabei keine Einschränkung der Kommando-
  199. zeilenlänge statt. Die so erzeugten Kommandozeilen können prinzipbedingt
  200. sehr lang werden; obwohl die Shell selbst nun keine Probleme mehr mit
  201. langen Kommandos hat, können einige Befehle diese dennoch nicht korrekt
  202. abarbeiten.
  203.  
  204. Ferner darf nun auch das auszuführende Kommando selbst durch `` generiert
  205. werden. So zeigt etwa
  206.  
  207. `echo list`
  208.  
  209. den Inhalt der augenblicklichen Directory an, indem der "list"-Befehl
  210. aus der Ausgabe von "echo" generiert wird.
  211.  
  212.  
  213. Rekursive Aliase: Enthält der Inhalt eines mittels "alias" erzeugten
  214. Befehles erneut selbst ein alias, so wird dieses Alias ebenso aufge-
  215. löst. Um endlose Schleifen zu verhindern, löst die Shell allerdings
  216. innerhalb jeder Kommandozeile ein Alias nur maximal einmal auf. In
  217. der V40 Shell fand keine rekursive Auflösung von Aliasen statt.
  218.  
  219.  
  220. Neue Kommandos: Die V45 Shell verfügt über drei neue eingebaute
  221. Kommandos namens "PushCD", "SwapCD" and "PopCD". PushCD legt das
  222. augenblickliche Verzeichnis in einen Stapelspeicher und wechselt
  223. wie "CD" in das angegebene Verzeichnis. PopCD entnimmt die oberste
  224. Ebene dieses Stapelspeichers und setzt das aktuelle Verzeichnis
  225. auf das so gefundene Verzeichnis. Mittels "PushCD" merkt sich somit
  226. die Shell das jeweils letzte Verzeichnis, das mit "PopCD" dann 
  227. wiederhergestellt werden kann. "SwapCD" vertauscht die oberste,
  228. oder eine anzugebene Ebene dieses Verzeichnisstapels mit dem 
  229. aktuellen Verzeichnis. Lesen Sie bitte für genauere Angaben die
  230. Dateien "PushCD", "PopCD" und "SwapCD", die auch weitere Argumente
  231. dieser nützlichen Befehle besprechen.
  232.  
  233. Erweiterte Kommandos: Einige eingebaute Kommandos wurden erweitert
  234. und ergänzt.
  235.  
  236. PATH erhielt eine neue Option "HEAD", mit der ein weitere Suchpfad
  237. an den Anfang der Liste der Pfade eingefügt wird. Ohne "HEAD" wird
  238. wie bisher ein weiterer Pfad an das Ende der Liste angefügt. Damit
  239. erhält ein mittels "HEAD" eingefügtes Verzeichnis eine höhere Prio-
  240. rität als bereits vorhandene Suchpfade.
  241.  
  242. SetENV und UnSetENV bekamen eine neue Option "SAVE" mittels der
  243. die Änderungen der Umgebungsvariablen permanent abgespeichert 
  244. werden.
  245.  
  246. ASK kann jetzt nicht nur Ja/Nein Eingaben beantworten, sondern kann
  247. auch Zahlen oder ganze Texte als Eingabe erwarten. Diese Eingabe
  248. erscheint dann entweder im Ausgabepfad von "ASK", oder wird mittels
  249. des "TO"-Argumentes in eine anzugebene Variable geschrieben.
  250.  
  251. ASK Prompt "Bitte eine Zahl eingeben: " numeric to a
  252.  
  253. bittet um die Eingabe einer Zahl,
  254.  
  255. ASK Prompt "Bitte einen Text eingeben: " string to a
  256.  
  257. bittet um die Eingabe eines Textes. In beiden Fällen wird
  258. die Eingabe in der Shell-Variablen $a abgelegt.
  259.  
  260.  
  261. Weitere kleinere Änderungen und Fehlerbereinigungen wurden an
  262. "Run", "Resident", "Set", "unSet", "Alias" und "unAlias" vorgenommen.
  263.  
  264.  
  265.  
  266. Weitere Kleinigkeiten:
  267.  
  268. - Das "implizite" Wechseln des aktuellen Verzeichnisses funktionierte
  269. in der V40 Shell nicht korrekt, wenn der Verzeichnisname in Anführungs-
  270. stiche eingeschlossen war. Dieser Fehler wurde in V45 behoben. So
  271. wechselt etwa der Befehl
  272.  
  273. "RAM Disk:"
  274.  
  275. korrekt in die RAM-Disk.
  276.  
  277. - Das Verhalten des Escape-Zeichens * wurde an diversen Stellen
  278.   repariert.
  279.  
  280. - Werden Variablen oder ``-Sequenzen innerhalb von Anführungszeichen
  281.   aufgelöst, so entfernt die Shell die äußeren Anführungszeichen.
  282.   Dieses Verhalten kann mittels "set keepdoublequotes on" ausge-
  283.   schaltet werden,
  284.  
  285. - Stack-Erweiterung von Shell-Befehlen: Findet die Shell innerhalb einer
  286.   Befehlsdatei den Text "$STACK:" gefolgt von einer Dezimalzahl und einem
  287.   Zeilenvorschub, so wird diese Zahl als minimale Größe des Stapelspeichers
  288.   für den Befehl verstanden und der Stapelspeicher ggf. auf diese Größe
  289.   erweitert.
  290.  
  291. Genaueres zu weiteren Änderungen zur Kommandosyntax der Shell findet
  292. sich in der englischsprachigen Datei "Shell".
  293.